1
Модель выполнения SIMT и разделение на варпы
AI032Lesson 6
00:00

Это SIMT (одна инструкция, несколько потоков) модель является сердцем архитектуры графических процессоров. Хотя вы пишете код для отдельных потоков, аппаратное обеспечение организует их в двухуровневую иерархию из сетей и блоков. Чтобы максимизировать эффективность, аппаратное обеспечение дополнительно делит эти блоки на единицы из 32 потоков, называемые варпами.

1. SIMT против SIMD

В отличие от SIMD процессоров (например, SSE/AVX), где вы вручную упаковываете данные в регистры, в модели SIMT потоки могут казаться независимыми. Аппаратное обеспечение автоматически группирует потоки в варпы, загружая одну инструкцию для всех 32 потоков, которые выполняются синхронно.

2. Правило линеаризации

Разработчики используют threadIdx.x, y, z для логики, но аппаратное обеспечение преобразует это в одномерную последовательность для планирования:

Индекс = x + (y × blockDim.x) + (z × blockDim.x × blockDim.y)
2D-блок(8 × 8)Варп 0: идентификаторы 0–31Варп 1: идентификаторы 32–63

Поскольку размер по оси x является наиболее быстро изменяющимся индексом, потоки с последовательными значениями threadIdx.x обычно попадают в один и тот же варп, что критически важно для объединения памяти.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>